import java.util.*;
/**
 * Write a description of class AfdelingMenu here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class AfdelingManagerMenu
{
    private MenuKiezer menu;
    private Manager manager;
    private Afdeling afdeling;
    private TuiHelper tuiHelper;
    private String actie;
    private ArrayList<Product> productenmagazijn;

     /**
     * Constructor for objects of class AfdelingMenu
     */
    public AfdelingManagerMenu(Afdeling afdeling, Manager manager, String actie)
    {
        this.manager = manager;
        this.afdeling = afdeling;
        this.actie = actie;
        toonProductAfdelingMenu();
    }

    public void toonProductAfdelingMenu( ) {
        menu = new MenuKiezer( "Welk product wilt u?", "maak een keuze" );
        toonProductAfdelingen();
        menu.addStopItem("terug");
    }
    
    public void toonProductAfdelingen( ){
        ArrayList<Product> producten = new ArrayList<Product>();
        producten = afdeling.vraagProductenOp();
        ArrayList<String> productnamen = new ArrayList<String>();
            if (producten.size() != 0 ) {
                for (Product product : producten){
                    if( !productnamen.contains( product.getNaam() ) ){
                        menu.addItem(product.toStringManager());
                        productnamen.add( product.getNaam() );
                    }
                }
            }
        
    }

     
    public void toonProductenMenu() {
        int keuze = -1;
        TuiHelper.clear();
        while ( keuze != 0 ) {
            keuze = menu.getMenukeuze();
                if ( keuze <=  afdeling.vraagProductenOp().size() && keuze > 0 ){
                    Product product = (Product)afdeling.vraagProductenOp().get(keuze-1);
                    if (actie.equalsIgnoreCase("bestellen") ){
                        bestelProduct(product);
                    }else if(actie.equalsIgnoreCase("prijsverkoop") ){
                        veranderVerkoopPrijs(product);
                    }else if(actie.equalsIgnoreCase("prijsinkoop") ){
                        veranderInkoopPrijs(product);
                    }else if(actie.equalsIgnoreCase("korting") ){
                        setKorting(product);
                    }else if(actie.equalsIgnoreCase("korting2voor1") ){
                        kortingTweeVoorEen(product);
                    }else if (actie.equalsIgnoreCase("kortingweg") ){
                        kortingWeg(product);
                    }else if(actie.equalsIgnoreCase("schappen") ){
                        legInSchappen(product);
                    }
                    break;
                }else{
                    System.out.println("Ongeldige keuze");
                }
        }
        TuiHelper.clear();
    }
    
    
    public void bestelProduct(Product product){
        int aantal = TuiHelper.stelVraagMetGetalAntwoord( "Vul het aantal in: ","", 1,999);
        
        int dag = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke dag is het houdbaar: ","", 0,31);
        int maand = TuiHelper.stelVraagMetGetalAntwoord( "Tot welke maand is het houdbaar:  ","", 0,12);
        int jaar = TuiHelper.stelVraagMetGetalAntwoord( "Tot welk jaar is het houdbaar:  ","", 0,2099);
        
        Datum houdbaarheidsDatum = new Datum(dag, maand, jaar);
        
        manager.bestelProduct(product, aantal, houdbaarheidsDatum );
        product.sorteerDatum();
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void veranderVerkoopPrijs(Product product){
        System.out.printf("De oude prijs is: %.2f%n",product.getVerkoopPrijs());
        double prijs = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier de nieuwe verkoopprijs in: ","",0.00,100.00 );
        manager.setVerkoopPrijsProduct(product.getNaam(),prijs);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
     public void veranderInkoopPrijs(Product product){
        System.out.printf("De oude prijs is: %.2f%n",product.getInkoopPrijs());
        double prijs = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier de nieuwe inkoopprijs in: ","",0.00,100.00 );
        manager.setInkoopPrijsProduct(product.getNaam(),prijs);
        TuiHelper.drukafDrukEnterEnWachtOpEnter();
    }
    
    public void kortingWeg(Product product){
        double prijs1 = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier de verkoopprijs in ","",0.00,100.00 );
        manager.kortingWeg(product, prijs1);
    }
    
    public void setKorting(Product product){
        double korting = TuiHelper.stelVraagMetDoubleAntwoord( "Vul hier de korting in procenten in ","",0.00,100.00 );
        manager.setKorting( product.getNaam(),  korting );
    }
    
    public void kortingTweeVoorEen(Product product) {
        manager.setKortingTweeVoorEen( product.getNaam());
    }
    
    public void legInSchappen(Product product){
        int voorraad = TuiHelper.stelVraagMetGetalAntwoord( "Hoeveel wilt u in de schappen leggen: ","", 0,product.getVoorraadMagazijn());
        if (voorraad == 0){
            TuiHelper.drukafDrukEnterEnWachtOpEnter();
        }
        else {        
            manager.legProductInSchap(product.getNaam(), voorraad);
            TuiHelper.drukafDrukEnterEnWachtOpEnter();
        }
    }
}

